package web.fabrimind.sm.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import web.fabrimind.common.annotation.Excel;
import web.fabrimind.common.core.domain.BaseEntity;

/**
 * 团队成员对象 team_member
 * 
 * @author zhihui
 * @date 2025-03-30
 */
public class TeamMember extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 成员ID */
    private Long memberId;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 团队ID */
    @Excel(name = "团队ID")
    private Long teamId;

    /** 职位 */
    @Excel(name = "职位")
    private String position;

    /** 加入日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "加入日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date joinDate;

    /** 是否组长（0否 1是） */
    @Excel(name = "是否组长", readConverterExp = "0=否,1=是")
    private String isLeader;

    /** 状态（0正常 1离开） */
    @Excel(name = "状态", readConverterExp = "0=正常,1=离开")
    private String status;
    
    /** 用户名称（只用于显示） */
    private String userName;
    
    /** 团队名称（只用于显示） */
    private String teamName;

    /** 排除的团队ID（查询时用） */
    private Long excludeTeamId;

    /** 成员名称（只用于显示） */
    private String memberName;

    public String getMemberName() {
        return memberName;
    }

    public void setMemberName(String memberName) {
        this.memberName = memberName;
    }

    public void setMemberId(Long memberId)
    {
        this.memberId = memberId;
    }

    public Long getMemberId() 
    {
        return memberId;
    }
    public void setUserId(Long memberName)
    {
        this.userId = memberName;
    }

    public Long getUserId()
    {
        return userId;
    }
    public void setTeamId(Long teamId) 
    {
        this.teamId = teamId;
    }

    public Long getTeamId() 
    {
        return teamId;
    }
    public void setPosition(String position) 
    {
        this.position = position;
    }

    public String getPosition() 
    {
        return position;
    }
    public void setJoinDate(Date joinDate) 
    {
        this.joinDate = joinDate;
    }

    public Date getJoinDate() 
    {
        return joinDate;
    }
    public void setIsLeader(String isLeader) 
    {
        this.isLeader = isLeader;
    }

    public String getIsLeader() 
    {
        return isLeader;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    
    public String getUserName() 
    {
        return userName;
    }

    public void setUserName(String userName) 
    {
        this.userName = userName;
    }

    public String getTeamName() 
    {
        return teamName;
    }

    public void setTeamName(String teamName) 
    {
        this.teamName = teamName;
    }

    public Long getExcludeTeamId() {
        return excludeTeamId;
    }

    public void setExcludeTeamId(Long excludeTeamId) {
        this.excludeTeamId = excludeTeamId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("memberId", getMemberId())
            .append("userId", getUserId())
            .append("teamId", getTeamId())
            .append("position", getPosition())
            .append("joinDate", getJoinDate())
            .append("isLeader", getIsLeader())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("userName", getUserName())
            .append("teamName", getTeamName())
            .append("excludeTeamId", getExcludeTeamId())
            .append("memberName", getMemberName())
            .toString();
    }
}
